export enum KEYS {
    /** 登录后的用户接口内容 */
    LOGIN_INFO = 'loginInfo',

    /** 角色信息 */
    ROLE_INFO = 'role',

    /** 站点信息 */
    SITE_DOMAIN = 'site_domain',

    /** 游客访问的分享者Secret */
    SECRET_CODE = 'secret_code',

    /**
     * 分享链接中携带的Secret
     * 访问他人的分享链接时默认他人的Secret
     * 查看自己的报告时默认自己的Secret
     */
    SHARE_SECRET = 'share_secret',

    /** 马兰花TOKEN */
    ACCESS_TOKEN = 'access_token',

    /** 主管部门报告数据 */
    DEPARTMENT_REPORT_DATA = 'department_report_data',

    /** 培训机构报告数据 */
    TRAINER_REPORT_DATA = 'trainer_report_data',

    /** 培训讲师报告数据 */
    TEACHER_REPORT_DATA = 'teacher_report_data',

    /** 分享页内容项 */
    GENERATE_OPTIONS = 'generate_options',

    /** 记住密码后，保存登录页输入框的内容(账号、密码) */
    LOGIN_INPUT_CONTENT = 'loginInputContent',
}

/**
 * 获取 localStorage
 * @param key
 * @returns
 */
export const getLocalStorage = (key: keyof typeof KEYS) => {
    const res = localStorage.getItem(KEYS[key]) as any

    try {
        return JSON.parse(res)
    } catch (e) {
        return res
    }
}

/**
 * 是否存有 localStorage
 * @param key
 * @returns
 */
export const hasLocalStorage = (key: keyof typeof KEYS) => {
    return getLocalStorage(key) !== null
}

/**
 * 通用写入 localStorage
 * @param key
 * @param val
 */
export const setLocalStorage = (key: keyof typeof KEYS, val: any) => {
    localStorage.setItem(KEYS[key], typeof val === 'object' ? JSON.stringify(val) : val)
}

/**
 * 删除
 * @param key
 */
export const delLocalStorage = (key: keyof typeof KEYS) => {
    localStorage.removeItem(KEYS[key])
}
